﻿Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Collections
Imports extranet.BE
Imports MySql.Data.MySqlClient
Imports extranet.DA

Public Class DAForum
    Private _conexao As MySqlConnection
    Private _con_string As String

    Sub New()
        _con_string = "Server=200.155.77.194;uid=evosystems;pwd=evosenha;Database=extranet;Allow User Variables=True" '"Server=200.155.77.194;uid=evosystems;pwd=evosenha;Database=extranet"
    End Sub

    Public Function SelecionaTodasCatSubcat() As List(Of BEForum)
        Dim lstobjBEForum As List(Of BEForum) = New List(Of BEForum)
        Dim objBEForum As BEForum
        Dim objBESubcategoria As BESubcategoria

        Dim consultaSql As String = "SELECT ext_categoria.*, ext_subcategoria.* FROM ext_categoria INNER JOIN ext_subcategoria ON ext_categoria.id_categoria = ext_subcategoria.id_categoria ORDER BY ext_categoria.nome_categoria"
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEForum = New BEForum
                        objBESubcategoria = New BESubcategoria

                        objBEForum.Id = reader(BEForum.ID_CATEGORIA)
                        objBEForum.Nome = reader(BEForum.NOME_CATEGORIA)
                        objBEForum.Visivel = reader(BEForum.VISIVEL_CATEGORIA)

                        objBESubcategoria.Id = reader(BESubcategoria.ID_SUBCATEGORIA)
                        objBESubcategoria.IdCategoria = reader(BESubcategoria.ID_CATEGORIA)
                        objBESubcategoria.Nome = reader(BESubcategoria.NOME_SUBCATEGORIA)
                        objBESubcategoria.Visivel = reader(BESubcategoria.VISIVEL_SUBCATEGORIA)

                        objBEForum.Subcategoria.Add(objBESubcategoria)
                        lstobjBEForum.Add(objBEForum)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBEForum
    End Function

    Public Function SelecionaCatSubcatVisiveis() As List(Of BEForum)
        Dim lstobjBEForum As List(Of BEForum) = New List(Of BEForum)
        Dim objBEForum As BEForum
        Dim objBESubcategoria As BESubcategoria

        Dim consultaSql As String = "SELECT ext_categoria.*, ext_subcategoria.* FROM ext_categoria INNER JOIN ext_subcategoria ON ext_categoria.id_categoria = ext_subcategoria.id_categoria WHERE(ext_categoria.visivel_categoria = 1) ORDER BY ext_categoria.nome_categoria"
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEForum = New BEForum
                        objBESubcategoria = New BESubcategoria

                        objBEForum.Id = reader(BEForum.ID_CATEGORIA)
                        objBEForum.Nome = reader(BEForum.NOME_CATEGORIA)
                        objBEForum.Visivel = reader(BEForum.VISIVEL_CATEGORIA)

                        objBESubcategoria.Id = reader(BESubcategoria.ID_SUBCATEGORIA)
                        objBESubcategoria.IdCategoria = reader(BESubcategoria.ID_CATEGORIA)
                        objBESubcategoria.Nome = reader(BESubcategoria.NOME_SUBCATEGORIA)
                        objBESubcategoria.Visivel = reader(BESubcategoria.VISIVEL_SUBCATEGORIA)

                        objBEForum.Subcategoria.Add(objBESubcategoria)
                        lstobjBEForum.Add(objBEForum)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBEForum
    End Function

    Public Function SelecionaSubcatVisiveis(ByVal idCategoria As Integer) As List(Of BESubcategoria)
        Dim lstobjBESubcategoria As List(Of BESubcategoria) = New List(Of BESubcategoria)
        Dim objBESubcategoria As BESubcategoria

        Dim consultaSql As String = "SELECT ext_subcategoria.nome_subcategoria,ext_subcategoria.id_subcategoria ,count(ext_topico.id_topico) as tot_topicos, count(ext_post.id_post) as tot_posts FROM ext_subcategoria LEFT OUTER JOIN ext_topico ON ext_subcategoria.id_subcategoria = ext_topico.id_subcategoria Left outer JOIN ext_post ON ext_topico.id_topico = ext_post.id_topico WHERE (ext_subcategoria.id_categoria =" & idCategoria.ToString & ") AND (ext_subcategoria.visivel_subcategoria = 1) GROUP by nome_subcategoria,ext_subcategoria.id_subcategoria"

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBESubcategoria = New BESubcategoria

                        objBESubcategoria.Nome = reader(BESubcategoria.NOME_SUBCATEGORIA)
                        objBESubcategoria.Id = reader(BESubcategoria.ID_SUBCATEGORIA)
                        objBESubcategoria.TotTopicos = reader(BESubcategoria.TOTAL_TOPICOS)
                        objBESubcategoria.TotPosts = reader(BESubcategoria.TOTAL_POSTS)
                        objBESubcategoria.Visivel = True

                        lstobjBESubcategoria.Add(objBESubcategoria)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBESubcategoria
    End Function

    Public Function SelecionaTodasSubcat(ByVal idCategoria As Integer) As List(Of BESubcategoria)
        Dim lstobjBESubcategoria As List(Of BESubcategoria) = New List(Of BESubcategoria)
        Dim objBESubcategoria As BESubcategoria

        Dim consultaSql As String = "SELECT ext_subcategoria.nome_subcategoria,ext_subcategoria.id_subcategoria ,count(ext_topico.id_topico) as tot_topicos, count(ext_post.id_post) as tot_posts,ext_subcategoria.visivel_subcategoria FROM ext_subcategoria LEFT OUTER JOIN ext_topico ON ext_subcategoria.id_subcategoria = ext_topico.id_subcategoria Left outer JOIN ext_post ON ext_topico.id_topico = ext_post.id_topico WHERE (ext_subcategoria.id_categoria =" & idCategoria.ToString & ") GROUP by nome_subcategoria,ext_subcategoria.id_subcategoria,ext_subcategoria.visivel_subcategoria"
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBESubcategoria = New BESubcategoria

                        objBESubcategoria.Nome = reader(BESubcategoria.NOME_SUBCATEGORIA)
                        objBESubcategoria.Id = reader(BESubcategoria.ID_SUBCATEGORIA)
                        objBESubcategoria.TotTopicos = reader(BESubcategoria.TOTAL_TOPICOS)
                        objBESubcategoria.TotPosts = reader(BESubcategoria.TOTAL_POSTS)
                        objBESubcategoria.Visivel = reader(BESubcategoria.VISIVEL_SUBCATEGORIA)

                        lstobjBESubcategoria.Add(objBESubcategoria)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBESubcategoria
    End Function

    Public Function SelecionarTodasCategorias() As List(Of BEForum)
        Dim lstobjBEForum As List(Of BEForum) = New List(Of BEForum)
        Dim objBEForum As BEForum

        Dim consultaSql As String = "SELECT ext_categoria.* FROM ext_categoria"
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEForum = New BEForum

                        objBEForum.Nome = reader(BEForum.NOME_CATEGORIA)
                        objBEForum.Id = reader(BEForum.ID_CATEGORIA)
                        objBEForum.Visivel = reader(BEForum.VISIVEL_CATEGORIA)

                        lstobjBEForum.Add(objBEForum)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBEForum
    End Function

    Public Function SelecionarCategoriasVisiveis() As List(Of BEForum)
        Dim lstobjBEForum As List(Of BEForum) = New List(Of BEForum)
        Dim objBEForum As BEForum

        Dim consultaSql As String = "SELECT ext_categoria.* FROM ext_categoria WHERE visivel_categoria = 1"
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEForum = New BEForum

                        objBEForum.Nome = reader(BEForum.NOME_CATEGORIA)
                        objBEForum.Id = reader(BEForum.ID_CATEGORIA)
                        objBEForum.Visivel = reader(BEForum.VISIVEL_CATEGORIA)

                        lstobjBEForum.Add(objBEForum)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBEForum
    End Function


    Public Function BuscaCategoria(ByVal idCategoria As Integer) As BEForum
        Dim objBEForum As New BEForum

        Dim consultaSql As String = "SELECT visivel_categoria, nome_categoria FROM ext_categoria WHERE id_categoria = " & idCategoria
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEForum = New BEForum

                        objBEForum.Id = idCategoria
                        objBEForum.Nome = reader(BEForum.NOME_CATEGORIA)
                        objBEForum.Visivel = reader(BEForum.VISIVEL_CATEGORIA)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return objBEForum
    End Function


    Public Function BuscaSubcategoria(ByVal idsubcategoria As Integer) As BESubcategoria
        Dim objBESubcategoria As New BESubcategoria

        Dim consultaSql As String = "SELECT visivel_subcategoria, nome_subcategoria, id_categoria FROM ext_subcategoria WHERE id_subcategoria = " & idsubcategoria
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBESubcategoria = New BESubcategoria

                        objBESubcategoria.Id = idsubcategoria
                        objBESubcategoria.IdCategoria = reader(BESubcategoria.ID_CATEGORIA)
                        objBESubcategoria.Nome = reader(BESubcategoria.NOME_SUBCATEGORIA)
                        objBESubcategoria.Visivel = reader(BESubcategoria.VISIVEL_SUBCATEGORIA)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return objBESubcategoria
    End Function

    Public Function SelecionaTopicosVisiveis(ByVal idsubcategoria As Integer) As List(Of BETopico)
        Dim lstobjBETopico As List(Of BETopico) = New List(Of BETopico)
        Dim objBETopico As BETopico

        Dim consultaSql As String = "SELECT COUNT(ext_topico.id_topico) AS totPosts, ext_topico.id_subcategoria, ext_topico.visivel_topico, ext_topico.titulo, ext_topico.visualizacoes, ext_topico.id_topico,ext_mensagem.remetente FROM ext_topico INNER JOIN ext_mensagem ON ext_topico.id_mensagem = ext_mensagem.id_mensagem LEFT OUTER JOIN ext_post ON ext_topico.id_topico = ext_post.id_topico WHERE (ext_topico.id_subcategoria =" & idsubcategoria & ") AND (ext_topico.visivel_topico = 1) AND (ext_mensagem.status = 'APROVADO') GROUP BY ext_topico.id_topico, ext_topico.id_subcategoria, ext_topico.visivel_topico, ext_topico.titulo, ext_topico.visualizacoes,ext_mensagem.remetente"
        '"SELECT COUNT(ext_topico.id_topico) AS totPosts, ext_topico.id_subcategoria, ext_topico.visivel_topico, ext_topico.titulo, ext_topico.visualizacoes, ext_post.id_topico,ext_mensagem.remetente FROM ext_topico INNER JOIN ext_mensagem ON ext_topico.id_mensagem = ext_mensagem.id_mensagem LEFT OUTER JOIN ext_post ON ext_topico.id_topico = ext_post.id_topico WHERE (ext_topico.id_subcategoria = 1) AND (ext_topico.visivel_topico =" & idsubcategoria & ") GROUP BY ext_post.id_topico, ext_topico.id_subcategoria, ext_topico.visivel_topico, ext_topico.titulo, ext_topico.visualizacoes,ext_mensagem.remetente"

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBETopico = New BETopico
                        objBETopico.MensagemTopico = New BEMensagem

                        objBETopico.Id = reader(BETopico.ID_TOPICO)
                        objBETopico.Titulo = reader(BETopico.TITULO_TOPICO)
                        objBETopico.TotPosts = reader(BETopico.TOTAL_POSTS)
                        objBETopico.totVisualizacoes = reader(BETopico.VISUALIZACOES)
                        'objBETopico.IdMensagem = reader(BETopico.ID_MENSAGEM)
                        objBETopico.Visivel = reader(BETopico.VISIVEL_TOPICO)

                        '   objBETopico.MensagemTopico.Aprovador = reader(BEMensagem.MSG_APROVADOR)
                        '  objBETopico.MensagemTopico.JustificativaReprovacao = reader(BEMensagem.MSG_JUSTIFICATIVA_REPROVACAO)
                        ' objBETopico.MensagemTopico.Reprovador = reader(BEMensagem.MSG_REPROVADOR)
                        'objBETopico.MensagemTopico.Status = reader(BEMensagem.MSG_STATUS)
                        objBETopico.MensagemTopico.Remetente = reader(BEMensagem.MSG_REMETENTE)
                        'objBETopico.MensagemTopico.Data = reader(BEMensagem.MSG_DATA)
                        'objBETopico.MensagemTopico.Mensagem = reader(BEMensagem.MSG)

                        lstobjBETopico.Add(objBETopico)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBETopico
    End Function



    Public Function SelecionaTopicosNaoPendentes(ByVal idsubcategoria As Integer) As List(Of BETopico)
        Dim lstobjBETopico As List(Of BETopico) = New List(Of BETopico)
        Dim objBETopico As BETopico

        Dim consultaSql As String = "SELECT COUNT(ext_topico.id_topico) AS totPosts, ext_topico.id_subcategoria, ext_topico.visivel_topico, ext_topico.titulo, ext_topico.visualizacoes, ext_topico.id_topico,ext_mensagem.remetente FROM ext_topico INNER JOIN ext_mensagem ON ext_topico.id_mensagem = ext_mensagem.id_mensagem LEFT OUTER JOIN ext_post ON ext_topico.id_topico = ext_post.id_topico WHERE (ext_topico.id_subcategoria =" & idsubcategoria & ") AND (ext_mensagem.status = 'APROVADO') GROUP BY ext_topico.id_topico, ext_topico.id_subcategoria, ext_topico.visivel_topico, ext_topico.titulo, ext_topico.visualizacoes,ext_mensagem.remetente"

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBETopico = New BETopico
                        objBETopico.MensagemTopico = New BEMensagem

                        objBETopico.Id = reader(BETopico.ID_TOPICO)
                        objBETopico.Titulo = reader(BETopico.TITULO_TOPICO)
                        objBETopico.TotPosts = reader(BETopico.TOTAL_POSTS)
                        objBETopico.totVisualizacoes = reader(BETopico.VISUALIZACOES)
                        objBETopico.Visivel = reader(BETopico.VISIVEL_TOPICO)

                        objBETopico.MensagemTopico.Remetente = reader(BEMensagem.MSG_REMETENTE)
                        lstobjBETopico.Add(objBETopico)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBETopico
    End Function


    Public Function SelecionaTodosTopicos(ByVal idsubcategoria As Integer) As List(Of BETopico)
        Dim lstobjBETopico As List(Of BETopico) = New List(Of BETopico)
        Dim objBETopico As BETopico

        Dim consultaSql As String = "SELECT ext_topico.* FROM ext_topico WHERE ext_topico.id_subcategoria = " & idsubcategoria

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBETopico = New BETopico
                        objBETopico.MensagemTopico = New BEMensagem

                        objBETopico.Id = reader(BETopico.ID_TOPICO)
                        objBETopico.IdMensagem = reader(BETopico.ID_MENSAGEM)
                        objBETopico.Visivel = reader(BETopico.VISIVEL_TOPICO)
                        objBETopico.Titulo = reader(BETopico.TITULO_TOPICO)
                        objBETopico.totVisualizacoes = reader(BETopico.VISUALIZACOES)

                        lstobjBETopico.Add(objBETopico)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBETopico
    End Function



    Public Function SelecionarPosts(ByVal tipo As Integer, ByVal idtopico As Integer) As List(Of BEPost)
        Dim lstobjBEPost As List(Of BEPost) = New List(Of BEPost)
        Dim objBEPost As BEPost
        Dim consultaSql As String = ""
        Select Case tipo
            Case 0
                consultaSql = "SELECT ext_usuario.avatar, ext_topico.titulo, ext_mensagem.remetente, ext_mensagem.data, ext_mensagem.mensagem, ext_topico.id_topico FROM ext_usuario INNER JOIN ext_mensagem ON ext_usuario.usuario = ext_mensagem.remetente INNER JOIN ext_topico ON ext_mensagem.id_mensagem = ext_topico.id_mensagem WHERE id_topico = " & idtopico
            Case 1
                consultaSql = "SELECT ext_usuario.avatar, ext_topico.titulo, ext_mensagem.remetente, ext_mensagem.data, ext_mensagem.mensagem, ext_post.id_post FROM ext_usuario INNER JOIN ext_mensagem ON ext_usuario.usuario = ext_mensagem.remetente INNER JOIN ext_post ON ext_mensagem.id_mensagem = ext_post.id_mensagem INNER JOIN ext_topico ON ext_topico.id_topico = ext_post.id_topico WHERE status = 'APROVADO' and ext_topico.id_topico = " & idtopico
        End Select

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEPost = New BEPost
                        objBEPost.MensagemPost = New BEMensagem

                        If tipo = 1 Then
                            objBEPost.Id = reader(BEPost.ID_POST)
                        End If
                        'objBEPost.TotalPostsCriador = reader(BEPost.TOT_POSTS_CRIADOR)
                        objBEPost.TituloTopico = reader(BEPost.TITULO)
                        objBEPost.ImgAvatar = reader(BEPost.AVATAR)
                        'objBEPost.IdMensagem = reader(BEPost.ID_MENSAGEM)

                        'objBEPost.MensagemPost.Aprovador = reader(BEMensagem.MSG_APROVADOR)
                        'objBEPost.MensagemPost.JustificativaReprovacao = reader(BEMensagem.MSG_JUSTIFICATIVA_REPROVACAO)
                        'objBEPost.MensagemPost.Reprovador = reader(BEMensagem.MSG_REPROVADOR)
                        'objBEPost.MensagemPost.Status = reader(BEMensagem.MSG_STATUS)
                        objBEPost.MensagemPost.Remetente = reader(BEMensagem.MSG_REMETENTE)
                        objBEPost.MensagemPost.Data = reader(BEMensagem.MSG_DATA)
                        objBEPost.MensagemPost.Mensagem = reader(BEMensagem.MSG)

                        lstobjBEPost.Add(objBEPost)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBEPost
    End Function


    Public Function SelecionarTopicosPendentes() As List(Of BETopicoPostPendente)
        Dim lstobjBETopicoPostPendente As List(Of BETopicoPostPendente) = New List(Of BETopicoPostPendente)
        Dim objBETopicoPostPendente As BETopicoPostPendente

        Dim consultaSql As String = "SELECT  ext_topico.titulo,ext_mensagem.remetente,ext_categoria.nome_categoria, ext_subcategoria.nome_subcategoria, ext_mensagem.data, ext_topico.id_topico, ext_mensagem.id_mensagem from ext_categoria " & _
                                      "inner join ext_subcategoria " & _
                                         "on ext_categoria.id_categoria=ext_subcategoria.id_categoria " & _
                                      "inner join ext_topico " & _
                                         "on ext_subcategoria.id_subcategoria=ext_topico.id_subcategoria " & _
                                      "inner join ext_mensagem " & _
                                         "on ext_topico.id_mensagem=ext_mensagem.id_mensagem " & _
                                      "WHERE ext_mensagem.status = 'AGUARDANDO'"

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBETopicoPostPendente = New BETopicoPostPendente

                        objBETopicoPostPendente.IdTopico = reader(BETopicoPostPendente.ID_TOPICO)
                        'objBETopicoPostPendente.IdPost = reader(BETopicoPostPendente.ID_POST)
                        objBETopicoPostPendente.IdMensagem = reader(BETopicoPostPendente.ID_MENSAGEM)
                        objBETopicoPostPendente.NomeTopico = reader(BETopicoPostPendente.NOME_TOPICO)
                        objBETopicoPostPendente.NomeRemetente = reader(BETopicoPostPendente.NOME_REMETENTE)
                        objBETopicoPostPendente.DataHora = reader(BETopicoPostPendente.DATA_HORA)
                        objBETopicoPostPendente.NomeCategoria = reader(BETopicoPostPendente.NOME_CATEGORIA)
                        objBETopicoPostPendente.NomeSubcategoria = reader(BETopicoPostPendente.NOME_SUBCATEGORIA)

                        lstobjBETopicoPostPendente.Add(objBETopicoPostPendente)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBETopicoPostPendente
    End Function


    Public Function SelecionarTodosPosts(ByVal idTopico As String) As List(Of BEPost)
        Dim lstobjBEPost As List(Of BEPost) = New List(Of BEPost)
        Dim objBEPost As BEPost

        Dim consultaSql As String = "SELECT ext_post.* FROM ext_post WHERE ext_post.id_topico = " & idTopico

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEPost = New BEPost

                        objBEPost.Id = reader(BEPost.ID_POST)
                        objBEPost.IdMensagem = reader(BEPost.ID_MENSAGEM)

                        lstobjBEPost.Add(objBEPost)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBEPost
    End Function





    Public Function SelecionarPostsPendentes() As List(Of BETopicoPostPendente)
        Dim lstobjBETopicoPostPendente As List(Of BETopicoPostPendente) = New List(Of BETopicoPostPendente)
        Dim objBETopicoPostPendente As BETopicoPostPendente

        Dim consultaSql As String = "SELECT  ext_topico.titulo,ext_mensagem.remetente,ext_categoria.nome_categoria, ext_subcategoria.nome_subcategoria, ext_mensagem.data, ext_topico.id_topico, ext_post.id_post, ext_mensagem.id_mensagem from ext_categoria " & _
                                      "inner join ext_subcategoria " & _
                                         "on ext_categoria.id_categoria=ext_subcategoria.id_categoria " & _
                                      "inner join ext_topico " & _
                                         "on ext_subcategoria.id_subcategoria=ext_topico.id_subcategoria " & _
                                      "inner join ext_post " & _
                                         "on ext_topico.id_topico=ext_post.id_topico " & _
                                      "inner join ext_mensagem " & _
                                         "on ext_post.id_mensagem=ext_mensagem.id_mensagem " & _
                                      "WHERE ext_mensagem.status = 'AGUARDANDO'"

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBETopicoPostPendente = New BETopicoPostPendente

                        objBETopicoPostPendente.IdTopico = reader(BETopicoPostPendente.ID_TOPICO)
                        objBETopicoPostPendente.IdPost = reader(BETopicoPostPendente.ID_POST)
                        objBETopicoPostPendente.IdMensagem = reader(BETopicoPostPendente.ID_MENSAGEM)
                        objBETopicoPostPendente.NomeTopico = reader(BETopicoPostPendente.NOME_TOPICO)
                        objBETopicoPostPendente.NomeRemetente = reader(BETopicoPostPendente.NOME_REMETENTE)
                        objBETopicoPostPendente.DataHora = reader(BETopicoPostPendente.DATA_HORA)
                        objBETopicoPostPendente.NomeCategoria = reader(BETopicoPostPendente.NOME_CATEGORIA)
                        objBETopicoPostPendente.NomeSubcategoria = reader(BETopicoPostPendente.NOME_SUBCATEGORIA)

                        lstobjBETopicoPostPendente.Add(objBETopicoPostPendente)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return lstobjBETopicoPostPendente
    End Function


    Public Sub AddCategoria(ByVal objBECategoria As BEForum)
        Dim consultaSql As String = "insert into ext_categoria (visivel_categoria, nome_categoria) values (@visivel_categoria,@nome_categoria);"
        Dim registrosCadastrados As Integer
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                command.Parameters.AddWithValue("@visivel_categoria", objBECategoria.Visivel)
                command.Parameters.AddWithValue("@nome_categoria", objBECategoria.Nome)
                _conexao.Open()
                registrosCadastrados = command.ExecuteNonQuery
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub AddSubcategoria(ByVal objBESubcategoria As BESubcategoria)
        Dim consultaSql As String = "insert into ext_subcategoria (visivel_subcategoria, nome_subcategoria, id_categoria) values (@visivel_subcategoria, @nome_subcategoria, @id_categoria);"
        Dim registrosCadastrados As Integer
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                command.Parameters.AddWithValue("@visivel_subcategoria", objBESubcategoria.Visivel)
                command.Parameters.AddWithValue("@nome_subcategoria", objBESubcategoria.Nome)
                command.Parameters.AddWithValue("@id_categoria", objBESubcategoria.IdCategoria)
                _conexao.Open()
                registrosCadastrados = command.ExecuteNonQuery
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub AddTopico(ByVal objBETopico As BETopico)
        Dim consultaSql As String = "insert into ext_topico (id_subcategoria, id_mensagem, visivel_topico, titulo, visualizacoes) values (@id_subcategoria,@id_mensagem, @visivel_topico, @titulo, @visualizacoes);"
        Dim registrosCadastrados As Integer
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                command.Parameters.AddWithValue("@id_subcategoria", objBETopico.IdSubcategoria)
                command.Parameters.AddWithValue("@id_mensagem", objBETopico.IdMensagem)
                command.Parameters.AddWithValue("@visivel_topico", objBETopico.Visivel)
                command.Parameters.AddWithValue("@titulo", objBETopico.Titulo)
                command.Parameters.AddWithValue("@visualizacoes", objBETopico.totVisualizacoes)
                _conexao.Open()
                registrosCadastrados = command.ExecuteNonQuery
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Function Addpost(ByVal objBEPost As BEPost) As Integer
        Dim consultaSql As String = "insert into ext_post (id_mensagem, id_topico) values (@id_mensagem, @id_topico);"
        Dim registrosCadastrados As Integer
        Dim auxIdPost As Integer
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                command.Parameters.AddWithValue("@id_mensagem", objBEPost.IdMensagem)
                command.Parameters.AddWithValue("@id_topico", objBEPost.IdTopico)
                _conexao.Open()
                registrosCadastrados = command.ExecuteNonQuery

                command.CommandText = "select @@identity"
                auxIdPost = command.ExecuteScalar
                _conexao.Close()
            End Using
        End Using
        Return auxIdPost
    End Function

    Public Function BuscaTopico(ByVal idtopico As Integer) As BETopico
        Dim objBETopico As New BETopico
        objBETopico.MensagemTopico = New BEMensagem

        Dim consultaSql As String = "SELECT ext_topico.id_topico, ext_topico.id_subcategoria, ext_topico.id_mensagem, ext_topico.visivel_topico, ext_topico.titulo, ext_topico.visualizacoes, ext_mensagem.id_mensagem AS Expr1, ext_mensagem.remetente, ext_mensagem.data, ext_mensagem.status, ext_mensagem.mensagem, ext_mensagem.aprovador, ext_mensagem.reprovador, ext_mensagem.justificativa_reprovacao FROM ext_topico INNER JOIN ext_mensagem ON ext_topico.id_mensagem = ext_mensagem.id_mensagem WHERE ext_topico.id_topico = " & idtopico.ToString

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBETopico.IdMensagem = reader(BETopico.ID_MENSAGEM)
                        objBETopico.IdSubcategoria = reader(BETopico.ID_SUBCATEGORIA)
                        objBETopico.Visivel = reader(BETopico.VISIVEL_TOPICO)
                        objBETopico.Titulo = reader(BETopico.TITULO_TOPICO)
                        objBETopico.totVisualizacoes = reader(BETopico.VISUALIZACOES)

                        ' objBETopico.MensagemTopico.Aprovador = reader(BEMensagem.MSG_APROVADOR)
                        objBETopico.MensagemTopico.Data = reader(BEMensagem.MSG_DATA)
                        objBETopico.MensagemTopico.JustificativaReprovacao = reader(BEMensagem.MSG_JUSTIFICATIVA_REPROVACAO)
                        objBETopico.MensagemTopico.Mensagem = reader(BEMensagem.MSG)
                        objBETopico.MensagemTopico.Remetente = reader(BEMensagem.MSG_REMETENTE)
                        'objBETopico.MensagemTopico.Reprovador = reader(BEMensagem.MSG_REPROVADOR)
                        objBETopico.MensagemTopico.Status = reader(BEMensagem.MSG_STATUS)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return objBETopico
    End Function

    Public Function BuscaPost(ByVal idPost As Integer) As BEPost
        Dim objBEPost As New BEPost
        objBEPost.MensagemPost = New BEMensagem
        Dim consultaSql As String = "SELECT ext_post.*, ext_mensagem.* FROM ext_post INNER JOIN ext_mensagem ON ext_post.id_mensagem = ext_mensagem.id_mensagem WHERE ext_post.id_post = " & idPost

        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        objBEPost.IdMensagem = reader(BEPost.ID_MENSAGEM)
                        objBEPost.IdTopico = reader(BEPost.ID_TOPICO)

                        ' objBEPost.MensagemPost.Aprovador = reader(BEMensagem.MSG_APROVADOR)
                        objBEPost.MensagemPost.Data = reader(BEMensagem.MSG_DATA)
                        objBEPost.MensagemPost.JustificativaReprovacao = reader(BEMensagem.MSG_JUSTIFICATIVA_REPROVACAO)
                        objBEPost.MensagemPost.Mensagem = reader(BEMensagem.MSG)
                        objBEPost.MensagemPost.Remetente = reader(BEMensagem.MSG_REMETENTE)
                        'objBEPost.MensagemPost.Reprovador = reader(BEMensagem.MSG_REPROVADOR)
                        objBEPost.MensagemPost.Status = reader(BEMensagem.MSG_STATUS)
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return objBEPost
    End Function

    Public Function ContaPostsUsuario(ByVal usuario As String) As Integer
        Dim total As Integer

        Dim consultaSql As String = "SELECT COUNT(ext_post.id_post) AS totalpostsusuario FROM ext_mensagem INNER JOIN ext_post ON ext_mensagem.id_mensagem = ext_post.id_mensagem WHERE (ext_mensagem.remetente = '" & usuario & "') AND (ext_mensagem.status = 'APROVADO')"
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                Using reader As MySqlDataReader = command.ExecuteReader()
                    While reader.Read()
                        total = reader("totalpostsusuario")
                    End While
                End Using
                _conexao.Close()
            End Using
        End Using
        Return total
    End Function

    Public Sub AprovaTopicoOuPost(ByVal objBEMensagem As BEMensagem)
        Dim consultaSql As String = "UPDATE ext_mensagem SET status = '" & objBEMensagem.Status & "', justificativa_reprovacao = '" & objBEMensagem.JustificativaReprovacao.Replace("'", "''") & "', mensagem = '" & objBEMensagem.Mensagem.Replace("'", "''") & "', aprovador = '" & objBEMensagem.Aprovador & "' WHERE id_mensagem = " & objBEMensagem.Id
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub

    Public Sub AlteraCategoria(ByVal objBEForum As BEForum)
        Dim consultaSql As String = "UPDATE ext_categoria SET visivel_categoria = '" & Convert.ToInt32(objBEForum.Visivel) & "', nome_categoria = '" & objBEForum.Nome.Replace("'", "''") & "' WHERE id_categoria = " & objBEForum.Id
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub AlteraSubcategoria(ByVal objBESubcategoria As BESubcategoria)
        Dim consultaSql As String = "UPDATE ext_subcategoria SET nome_subcategoria = '" & objBESubcategoria.Nome.Replace("'", "''") & "', visivel_subcategoria = " & Convert.ToInt32(objBESubcategoria.Visivel) & " WHERE ext_subcategoria.id_subcategoria = " & objBESubcategoria.Id
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub AlteraTopico(ByVal objBETopico As BETopico)
        Dim consultaSql As String = "UPDATE ext_topico SET titulo = '" & objBETopico.Titulo.Replace("'", "''") & "', visivel_topico = " & Convert.ToInt32(objBETopico.Visivel) & " WHERE ext_topico.id_topico = " & objBETopico.Id
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub AlteraPost(ByVal objBEPost As BEPost)

    End Sub

    Public Sub AlteraVisibilidadeTopico(ByVal objBETopico As BETopico)
        Dim consultaSql As String = "UPDATE ext_topico SET visivel_topico = " & Convert.ToInt32(objBETopico.Visivel) & " WHERE ext_topico.id_topico = " & objBETopico.Id
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub



    Public Sub ExcluiCategoria(ByVal idCategoria As Integer)
        Dim consultaSql As String = "DELETE from ext_Categoria WHERE ext_categoria.id_categoria = " & idCategoria
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub ExcluiSubcategoria(ByVal idSubcategoria As Integer)
        Dim consultaSql As String = "DELETE from ext_subcategoria WHERE ext_subcategoria.id_subcategoria = " & idSubcategoria
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub ExcluiTopico(ByVal idTopico As Integer)
        Dim consultaSql As String = "DELETE from ext_topico WHERE ext_topico.id_topico = " & idTopico
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub ExcluiPost(ByVal idPost As Integer)
        Dim consultaSql As String = "DELETE from ext_post WHERE ext_post.id_post = " & idPost
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub
    Public Sub ExcluiMensagem(ByVal idMensagem As Integer)
        Dim consultaSql As String = "DELETE from ext_mensagem WHERE ext_mensagem.id_mensagem = " & idMensagem
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub


    Public Sub IncVisualizacoes(ByVal idTopico As String)
        Dim consultaSql As String = "UPDATE ext_topico set visualizacoes = (visualizacoes+1) where id_topico = " & idTopico
        Using _conexao As New MySqlConnection(_con_string)
            Using command As New MySqlCommand(consultaSql, _conexao)
                _conexao.Open()
                command.ExecuteNonQuery()
            End Using
            _conexao.Close()
        End Using
    End Sub

    Public Function PesquisarMensagemSimples(ByVal strFiltro As String) As List(Of BEPesquisaMsg)
        Dim lstBEPesquisaMsg As New List(Of BEPesquisaMsg)
        Dim objBD As New BancoDeDados
        Dim objDS As DataSet
        Dim sb As New System.Text.StringBuilder

        sb.Append("SELECT t1.id_topico, cat.id_categoria, cat.nome_categoria, t1.id_subcategoria, sub.nome_subcategoria, t1.titulo, t2.mensagem")
        sb.Append(" FROM ext_topico t1")
        sb.Append(" INNER JOIN (SELECT DISTINCT Coalesce(pos.id_topico, top.id_topico) as id, msg.mensagem from ext_mensagem msg LEFT JOIN ext_topico top ON top.id_mensagem = msg.id_mensagem LEFT JOIN ext_post pos ON pos.id_mensagem = msg.id_mensagem WHERE msg.mensagem LIKE '%" & strFiltro & "%' OR top.titulo LIKE '%" & strFiltro & "%' AND (pos.id_topico IS NOT NULL OR top.id_topico IS NOT NULL) ) t2 ON t2.id = t1.id_topico")
        sb.Append(" INNER JOIN ext_subcategoria sub ON sub.id_subcategoria = t1.id_subcategoria")
        sb.Append(" INNER JOIN ext_categoria cat ON cat.id_categoria = sub.id_categoria")
        sb.Append(" WHERE t1.visivel_topico = '1'")

        objDS = objBD.ExecutaQuery(sb.ToString())

        If objDS.Tables.Count > 0 Then
            For Each dr As DataRow In objDS.Tables(0).Rows
                Dim strMsg As String = RemoverTagsHTML(dr(BEPesquisaMsg.TRECHO_MENSAGEM))
                If Not VerificaSeJaExiste(dr(BEPesquisaMsg.ID_TOPICO), strMsg, strFiltro, lstBEPesquisaMsg) Then
                    Dim objBEPesquisaMsg As New BEPesquisaMsg
                    objBEPesquisaMsg.IdTopico = Convert.ToInt32(dr(BEPesquisaMsg.ID_TOPICO))
                    objBEPesquisaMsg.IdSubcategoria = Convert.ToInt32(dr(BEPesquisaMsg.ID_SUBCATEGORIA))
                    objBEPesquisaMsg.IdCategoria = Convert.ToInt32(dr(BEPesquisaMsg.ID_CATEGORIA))
                    objBEPesquisaMsg.Titulo = dr(BEPesquisaMsg.TITULO_TOPICO)
                    objBEPesquisaMsg.NomeSubCategoria = dr(BEPesquisaMsg.NOME_SUBCATEGORIA)
                    objBEPesquisaMsg.NomeCategoria = dr(BEPesquisaMsg.NOME_CATEGORIA)
                    objBEPesquisaMsg.TrechoMensagem = PreparaTrechoMsg(strMsg, strFiltro)
                    lstBEPesquisaMsg.Add(objBEPesquisaMsg)
                End If
            Next
        End If
        Return lstBEPesquisaMsg
    End Function

    Public Function PesquisarMensagemAvancada(ByVal txtBuscaExpressao As String, ByVal txtBuscaQualquer As String, ByVal txtBuscaSem As String, ByVal txtBuscaTodas As String) As List(Of BEPesquisaMsg)
        Dim lstBEPesquisaMsg As New List(Of BEPesquisaMsg)
        Dim objBD As New BancoDeDados
        Dim objDS As DataSet
        Dim sb As New System.Text.StringBuilder
        Dim boolHouvePrimeiroFiltro As Boolean = False

        sb.Append("SELECT t1.id_topico, cat.id_categoria, cat.nome_categoria, t1.id_subcategoria, sub.nome_subcategoria, t1.titulo, t2.mensagem")
        sb.Append(" FROM ext_topico t1")
        sb.Append(" INNER JOIN (SELECT DISTINCT Coalesce(pos.id_topico, top.id_topico) as id, msg.mensagem from ext_mensagem msg LEFT JOIN ext_topico top ON top.id_mensagem = msg.id_mensagem LEFT JOIN ext_post pos ON pos.id_mensagem = msg.id_mensagem WHERE ")

        If txtBuscaExpressao <> "" Then
            If boolHouvePrimeiroFiltro = False Then
                boolHouvePrimeiroFiltro = True
            Else
                sb.Append(" AND ")
            End If
            sb.Append(" (msg.mensagem LIKE '%" & txtBuscaExpressao & "%' OR top.titulo LIKE '%" & txtBuscaExpressao & "%') ")
        End If

        If txtBuscaQualquer <> "" Then
            If boolHouvePrimeiroFiltro = False Then
                boolHouvePrimeiroFiltro = True
            Else
                sb.Append(" AND ")
            End If
            Dim lstQualquer() As String = txtBuscaQualquer.Split(" ")
            For i As Integer = 0 To lstQualquer.Length - 1
                If i <> 0 Then
                    sb.Append(" OR ")
                End If
                sb.Append(" (msg.mensagem LIKE '%" & lstQualquer(i) & "%' OR top.titulo LIKE '%" & lstQualquer(i) & "%') ")
            Next
        End If

        If txtBuscaSem <> "" Then
            If boolHouvePrimeiroFiltro = False Then
                boolHouvePrimeiroFiltro = True
            Else
                sb.Append(" AND ")
            End If
            Dim lstSem() As String = txtBuscaSem.Split(" ")
            For i As Integer = 0 To lstSem.Length - 1
                If i <> 0 Then
                    sb.Append(" AND ")
                End If
                sb.Append(" (msg.mensagem NOT LIKE '%" & lstSem(i) & "%' AND top.titulo NOT LIKE '%" & lstSem(i) & "%') ")
            Next
        End If

        If txtBuscaTodas <> "" Then
            If boolHouvePrimeiroFiltro = False Then
                boolHouvePrimeiroFiltro = True
            Else
                sb.Append(" AND ")
            End If
            Dim lstTodas() As String = txtBuscaTodas.Split(" ")
            For i As Integer = 0 To lstTodas.Length - 1
                If i <> 0 Then
                    sb.Append(" AND ")
                End If
                sb.Append(" (msg.mensagem LIKE '%" & lstTodas(i) & "%' OR  top.titulo LIKE '%" & lstTodas(i) & "%') ")
            Next
        End If

        sb.Append("AND (pos.id_topico IS NOT NULL OR top.id_topico IS NOT NULL) ) t2 ON t2.id = t1.id_topico")
        sb.Append(" INNER JOIN ext_subcategoria sub ON sub.id_subcategoria = t1.id_subcategoria")
        sb.Append(" INNER JOIN ext_categoria cat ON cat.id_categoria = sub.id_categoria")
        sb.Append(" WHERE t1.visivel_topico = '1'")

        objDS = objBD.ExecutaQuery(sb.ToString())

        If objDS.Tables.Count > 0 Then
            For Each dr As DataRow In objDS.Tables(0).Rows
                Dim strMsg As String = RemoverTagsHTML(dr(BEPesquisaMsg.TRECHO_MENSAGEM))
                If Not VerificaSeJaExisteAvancada(dr(BEPesquisaMsg.ID_TOPICO), strMsg, lstBEPesquisaMsg) Then
                    Dim objBEPesquisaMsg As New BEPesquisaMsg
                    objBEPesquisaMsg.IdTopico = Convert.ToInt32(dr(BEPesquisaMsg.ID_TOPICO))
                    objBEPesquisaMsg.IdSubcategoria = Convert.ToInt32(dr(BEPesquisaMsg.ID_SUBCATEGORIA))
                    objBEPesquisaMsg.IdCategoria = Convert.ToInt32(dr(BEPesquisaMsg.ID_CATEGORIA))
                    objBEPesquisaMsg.Titulo = dr(BEPesquisaMsg.TITULO_TOPICO)
                    objBEPesquisaMsg.NomeSubCategoria = dr(BEPesquisaMsg.NOME_SUBCATEGORIA)
                    objBEPesquisaMsg.NomeCategoria = dr(BEPesquisaMsg.NOME_CATEGORIA)
                    objBEPesquisaMsg.TrechoMensagem = strMsg.Substring(0, IIf(strMsg.Length > 40, 40, strMsg.Length))
                    lstBEPesquisaMsg.Add(objBEPesquisaMsg)
                End If
            Next
        End If
        Return lstBEPesquisaMsg
    End Function
    
    Private Function VerificaSeJaExiste(ByVal intIdTopico As Integer, ByVal strMsg As String, ByVal strFiltro As String, ByVal lstBEPesquisaMsg As List(Of BEPesquisaMsg)) As Boolean
        Dim boolRetorno As Boolean = False
        For Each objBEPesquisaMsg As BEPesquisaMsg In lstBEPesquisaMsg
            If objBEPesquisaMsg.IdTopico = intIdTopico Then
                objBEPesquisaMsg.TrechoMensagem &= "<br>..." & PreparaTrechoMsg(strMsg, strFiltro) & "..."
                boolRetorno = True
            End If
        Next
        Return boolRetorno
    End Function

    Private Function VerificaSeJaExisteAvancada(ByVal intIdTopico As Integer, ByVal strMsg As String, ByVal lstBEPesquisaMsg As List(Of BEPesquisaMsg)) As Boolean
        Dim boolRetorno As Boolean = False
        For Each objBEPesquisaMsg As BEPesquisaMsg In lstBEPesquisaMsg
            If objBEPesquisaMsg.IdTopico = intIdTopico Then
                objBEPesquisaMsg.TrechoMensagem &= " " & strMsg.Substring(0, IIf(strMsg.Length > 40, 40, strMsg.Length))
                boolRetorno = True
            End If
        Next
        Return boolRetorno
    End Function

    Private Function RemoverTagsHTML(ByVal in_HTML As String) As String
        Return System.Text.RegularExpressions.Regex.Replace(in_HTML, "<(.|\n)*?>", "")
    End Function

    Private Function PreparaTrechoMsg(ByVal strMsg As String, ByVal strFiltro As String) As String
        Dim strRetorno As String = ""
        Dim intMsgSeparado As Integer = strMsg.IndexOf(strFiltro)
        Dim intIndiceInicial As Integer = 0
        Dim intIndiceFinal As Integer

        intIndiceInicial = intMsgSeparado - 40

        If intIndiceInicial < 0 Then
            intIndiceInicial = 0
        End If

        If ((intIndiceInicial + 80 + strFiltro.Length) >= strMsg.Length) Then
            intIndiceFinal = (strMsg.Length - intIndiceInicial)
        Else
            intIndiceFinal = 80 + strFiltro.Length
        End If

        strRetorno = "... " & strMsg.Substring(intIndiceInicial, intIndiceFinal) & "... <br>"
        strRetorno = strRetorno.Replace(strFiltro, "<b>" & strFiltro & "</b>")

        Return strRetorno
    End Function
End Class
